


********************************************************************************
* Figure 8: The FOMC Decline and the Fed's Monetary Policy Actions
********************************************************************************

*********************************
* (A) Meetings with short rate changes
*********************************

use "../data/final_data_fed_secular_decline", clear

keep if date >= mdy(6,1,1989)
drop if date >= mdy(7,1,2021)

*Define zero lower bound episodes
generate zlb = 1 if date >= mdy(12,16,2008) & date <= mdy(12,16,2015)
replace zlb = 1 if date >= mdy(3,15,2020)
replace zlb = 0 if missing(zlb)

*Variables that are used in the graph
generate zero = 0
replace zlb = zlb * (-8)

*Obtain meetings with changes in the federal funds rate target
generate fomc_meet_ffr_chg = fomc_meet * ffr_chg

local yield = "sveny10_chg"

generate FOMC_all = `yield' 		if fomc_meet[_n+1]==1 	| fomc_meet==1 | fomc_meet[_n-1] ==1
generate FOMC_rate_change = `yield' if fomc_meet_ffr_chg[_n+1]==1 | fomc_meet_ffr_chg==1 | fomc_meet_ffr_chg[_n-1] ==1

generate cum_FOMC_all = sum(FOMC_all)
generate cum_FOMC_rate_change = sum(FOMC_rate_change)

twoway (rarea zero zlb date, color(gray%10)) || ///
		(line cum_FOMC_all cum_FOMC_rate_change date, lcolor(red gs6) lwidth(medthick medthick)),  ///
	scheme(s1mono) ///
	text(-7.8 19200 "ZLB" -7.8 22200 "ZLB") ///
	xlabel(, format(%tdCCYY)) ///
	ylabel(, angle(horizontal)) ///
	ytitle("Cumulative yield change (%)") ///
	xtitle("") ///
	legend(cols(1) pos(2) ring(0) symxsize(*0.5) ///
	order(2 "10y yield chg around FOMC meetings" 3 "10y yield chg around meetings with target change"))  ///
	graphregion(margin(0 1 0 0))	
	graph export "../figures/figure8a.png", replace


*********************************
* (B) Meetings with negative Kuttner shock
*********************************

use "../data/final_data_fed_secular_decline", clear

keep if date >= mdy(6,1,1989)
drop if date >= mdy(7,1,2021)

*Define zero lower bound episodes
generate zlb = 1 if date >= mdy(12,16,2008) & date <= mdy(12,16,2015)
replace zlb = 1 if date >= mdy(3,15,2020)
replace zlb = 0 if missing(zlb)

*Variables that are used in the graph
generate zero = 0
replace zlb = zlb * (-8)

*Obtain meetings with negative Kuttner shock
generate fomc_meet_neg_kuttner = fomc_meet * neg_kuttner

local yield = "sveny10_chg"

generate FOMC_all = `yield' 		if fomc_meet[_n+1]==1 	| fomc_meet==1 | fomc_meet[_n-1] ==1
generate FOMC_rate_change = `yield' if fomc_meet_neg_kuttner[_n+1]==1 | fomc_meet_neg_kuttner==1 | fomc_meet_neg_kuttner[_n-1] ==1

generate cum_FOMC_all = sum(FOMC_all)
generate cum_FOMC_rate_change = sum(FOMC_rate_change)

twoway (rarea zero zlb date, color(gray%10)) || ///
		(line cum_FOMC_all cum_FOMC_rate_change date, lcolor(red gs6) lwidth(medthick medthick)),  ///
	scheme(s1mono) ///
	text(-7.8 19200 "ZLB" -7.8 22200 "ZLB") ///
	xlabel(, format(%tdCCYY)) ///
	ylabel(, angle(horizontal)) ///
	ytitle("Cumulative yield change (%)") ///
	xtitle("") ///
	legend(cols(1) pos(2) ring(0) symxsize(*0.5) ///
	order(2 "10y yield chg around FOMC meetings" 3 "10y yield chg around meetings with neg. fed funds fut shocks"))  ///
	graphregion(margin(0 1 0 0))	
	graph export "../figures/figure8b.png", replace	
